#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

#include "ArmePrincipale.h"


void initArmePrincipale (ArmePrincipale* parme_principale)
{
    assert (parme_principale!=NULL);
    parme_principale->niveau_arme = 1;
}

ArmePrincipale* creerArmePrincipale ()
{	
    ArmePrincipale* parme_principale=malloc (sizeof(ArmePrincipale));
    initArmePrincipale (parme_principale);
    return parme_principale;
}

void detruireArmePrincipale (ArmePrincipale** pparme_principale)
{
    assert (pparme_principale!=NULL);
    free (*pparme_principale);
    *pparme_principale=NULL;
}

const int getNiveauArmePrincipale (const ArmePrincipale* parme_principale)
{
    assert (parme_principale!=NULL);
    return parme_principale->niveau_arme;
}

void setNiveauArmePrincipale (ArmePrincipale* parme_principale, const int niveau_arm)
{
    assert (parme_principale!=NULL); 
    assert (niveau_arm > 0);
    parme_principale->niveau_arme=niveau_arm;
}

/** @brief Cette procedure permet de tester toutes les fonctions du module*/
void testRegressionArmePrincipale ()
{
  
  ArmePrincipale* parm_prin=creerArmePrincipale();
  
  initArmePrincipale (parm_prin);
  printf("apres initialisation le niveau de l'arme devrait etre 0 il est a %d et le get donne %d\n\n",
	 parm_prin->niveau_arme,getNiveauArmePrincipale (parm_prin));
  
  setNiveauArmePrincipale (parm_prin,2);
  printf(" le niveau de l'arme devrait etre 2 il est a %d et le get donne %d\n\n",
	 parm_prin->niveau_arme,getNiveauArmePrincipale (parm_prin));
  detruireArmePrincipale (&parm_prin);
  printf("apres destruction l'adresse de l'arme devrait etre 0 il est a %p \n\n",
	 parm_prin);
printf("Test regression armePrincipale termine\n\n");
}
